package pe.com.bbva.carga.bo.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.bbva.carga.bo.ArchivoBO;
import pe.com.bbva.carga.dao.ArchivoDAO;
import pe.com.bbva.carga.domain.Archivo;
import pe.com.stefanini.core.bo.GenericBOImpl;
import pe.com.stefanini.core.bo.Grid;
import pe.com.stefanini.core.exceptions.BOException;
import pe.com.stefanini.core.exceptions.DAOException;

@Service("archivoBO")
public class ArchivoBOImpl extends GenericBOImpl<Archivo> implements ArchivoBO{
	
	@Resource
	private ArchivoDAO archivoDAO;

	@Transactional(propagation=Propagation.REQUIRED)
	public void save(Archivo archivo) throws BOException, DAOException {
		super.doSave(archivo);
	}
	
	public void update(Archivo archivo) throws BOException {			
		try {
			super.doSave(archivo);
		} catch (Exception e) {
		e.printStackTrace();
		throw new BOException(e.getMessage());
		}
	}
	
	public Archivo findById(Long id) throws BOException {
		Archivo archivo = super.findById(Archivo.class, id);
		return archivo;
	}

	public List<Archivo> findArchivos(Archivo archivo)
			throws BOException, DAOException {
		List<Archivo> archivos = archivoDAO.findArchivos(archivo);
		return archivos;
	}
	
	@Override
	public Grid<Archivo> findToGrid(Archivo archivo, String order, int page, int rows)
	throws BOException, DAOException {
		String where="where ";	
		List<Archivo> listaProcesos= findArchivos(archivo);
	    return super.findToGridList(listaProcesos,where, " order by "+order,page,rows);
	}
	
	@Transactional(propagation=Propagation.REQUIRED , rollbackFor ={BOException.class})
	public Long  ValidaCargaEnProceso() throws BOException {
		Long idArchivo = 0L;		
		try {
			idArchivo = archivoDAO.ValidaCargaEnProceso();
		} catch (DAOException e) {
			e.printStackTrace();
			throw new BOException(e.getMessage());
		}
		return idArchivo;
	}
}